#pragma once
#include "EventLoop.h"
#include "WorkerThread.h"
#include <vector>
#include <assert.h>

class ThreadPool { // 线程池
public:
	ThreadPool(EventLoop* mainEventLoop, int count);
	~ThreadPool();

	void run(); // 启动线程池

	EventLoop* takeWorkerEventLoop(); // 取出线程池中的某个子线程的反应堆实例
private:
	EventLoop* _mainEventLoop;			  // 主线程的反应堆模型
	bool _isStart;						  // 记录线程池是否启动了
	ssize_t _threadNum;					  // 线程池中线程的数量
	vector<WorkerThread*> _workerThreads; // 工作线程的数组
	int _index;							  // 工作线程在_workerThreads中的下标
};